package arithmetic;

import java.util.Scanner;

/**
 * HJ29 字符串加解密
 * 知识点:
 * 1.int转char类型格式：(char)num
 * 2.ascii码：0~9/48~57;A~Z/65~90;a~z/97~122
 * 描述
 * 对输入的字符串进行加解密，并输出。
 *
 * 加密方法为：
 *
 * 当内容是英文字母时则用该英文字母的后一个字母替换，同时字母变换大小写,如字母a时则替换为B；字母Z时则替换为a；
 *
 * 当内容是数字时则把该数字加1，如0替换1，1替换2，9替换0；
 *
 * 其他字符不做变化。
 *
 * 解密方法为加密的逆过程。
 * 数据范围：输入的两个字符串长度满足1≤n≤1000  ，保证输入的字符串都是只由大小写字母或者数字组成
 * 输入描述：
 * 第一行输入一串要加密的密码
 * 第二行输入一串加过密的密码
 *
 * 输出描述：
 * 第一行输出加密后的字符
 * 第二行输出解密后的字符
 *
 * 示例1
 * 输入：
 * abcdefg
 * BCDEFGH
 * 复制
 * 输出：
 * BCDEFGH
 * abcdefg
 */
public class TestHW29 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        // while (in.hasNextInt()) { // 注意 while 处理多个 case
        //     int a = in.nextInt();
        //     int b = in.nextInt();
        //     System.out.println(a + b);
        // }
        String encryption = "";
        String decryption = "";
        if(in.hasNextLine()){
            encryption = in.nextLine();
        }
        if(in.hasNextLine()){
            decryption = in.nextLine();
        }
        if(encryption.isEmpty() || decryption.isEmpty())return;
        encryption = encryptionTest(encryption);
        decryption = decryptionTest(decryption);
        System.out.println(encryption+"\n"+decryption);
    }

    //加密
    public static String encryptionTest(String encryption){
        char[] chs = encryption.toCharArray();
        int index = 0;
        String str = "";
        while(index<chs.length){
            char ch= chs[index];
            int ch2 = 0;
            if(ch>=48 && ch<=57){
                //处理数字
                ch2 = ch + 1;
                ch = ch2>57?48:(char)ch2;
            }else if(ch>=65 && ch<=90){
                //处理大写字母
                ch2 = ch+1;
                ch = (char)((ch2>90?65:(char)ch2)+32);
            }else if(ch>=97 && ch<=122){
                //处理小写字母
                ch2 = ch+1;
                ch = (char)((ch2>122?97:(char)ch2)-32);
            }
            str+=ch;
            index++;
        }
        return str;
    }

    //解密
    public static String decryptionTest(String decryption){
        char[] chs = decryption.toCharArray();
        int index = 0;
        String str = "";
        while(index<chs.length){
            char ch= chs[index];
            int ch2 = 0;
            if(ch>=48 && ch<=57){
                //处理数字
                ch2 = ch - 1;
                ch = ch2<48?57:(char)ch2;
            }else if(ch>=65 && ch<=90){
                //处理大写字母
                ch2 = ch-1;
                ch = (char)((ch2<65?90:(char)ch2)+32);
            }else if(ch>=97 && ch<=122){
                //处理小写字母
                ch2 = ch-1;
                ch = (char)((ch2<97?122:(char)ch2)-32);
            }
            str+=ch;
            index++;
        }
        return str;
    }
}
